package iedcyt.acute.businessServices.collGroups.dataMethods;


import iedcyt.acute.businessServices.common.DocumentsUtils;
import iedcyt.acute.dataAccess.domain.acute1.Author_Data;
import iedcyt.acute.dataAccess.domain.acute1.CollGroupData;
import iedcyt.acute.dataAccess.domain.acute1.CollGroup_Member;
import iedcyt.acute.dataAccess.factories.AbsACUTE1FactoryDao;

import java.util.ArrayList;
import java.util.List;

/**
 * Clase que se encarga del calculo de la productividad (solo para grupos)
 * @author ISR
 *
 */
public class CollGroupData_ProductivityMethod extends ACollGroupDataMethod {

	/**
	 * se encarga del calculo de la productividad: produccion / miembros
	 * (solo para grupos)
	 * @param type permite indicar los tipos de documentos para el calculo
	 */
	public CollGroupData_ProductivityMethod(List<String> type)
	{
		_types = type;
		this._dataDescription = "Productivity";
	}
	
	/**
	 * @see iedcyt.acute.businessServices.collGroups.dataMethods.ACollGroupDataMethod#execute(int)
	 */
	@Override
	public List<CollGroupData> execute(int idGr) {
		//La productividad es la produccion dividida por el numero de miembros
		
		int production = DocumentsUtils.getDocumentsByIdGroup(idGr, _types).size();
		
		List<CollGroup_Member> members = AbsACUTE1FactoryDao.getInstance().getCollGroup_MemberDao().selectByIdGr(new int[] { idGr });
		
		double productivity = (double)production / (double)members.size();
		
		CollGroupData data = new CollGroupData(idGr, this._dataDescription, productivity+"");
		
		ArrayList<CollGroupData> arr = new ArrayList<CollGroupData>();
		arr.add(data);
		
		return arr;
	}
	
	/**
	 * @see iedcyt.acute.businessServices.collGroups.dataMethods.ACollGroupDataMethod#executeForAuthor(int)
	 */
	@Override
	public List<Author_Data> executeForAuthor(int idAu) {
		
		//Lo devolvemos vacio
		ArrayList<Author_Data> arr = new ArrayList<Author_Data>();
		
		
		return arr;
	}
	
	
}
